package com.fortune.dao;

import com.fortune.dto.in.product.ProductAddDto;
import com.fortune.dto.in.product.ProductEditDto;
import com.fortune.dto.in.product.ProductListDto;
import com.fortune.dto.in.product.ProductUpAndDown;
import com.fortune.vo.channelDiscountMgt.ProductInChannealDiscountMgt;
import com.fortune.vo.productMgt.Product;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

public interface MProductInfoDao {

    /**
     * 查询商品列表
     * @param companyId
     * @return
     */
    List<Product> queryProductInfoList(@Param("companyId") String companyId,@Param("productListDto") ProductListDto productListDto);

    /**
     * 查询商品列表个数
     * @param companyId
     * @return
     */
    int queryProductInfoListCount(String companyId);

    /**
     * 通过名称查询该商品是否存在
     * @param companyId
     * @param name
     * @return
     */
    int queryProductByName(@Param("companyId") String companyId, @Param("name") String name);

    /**
     * 通过商品编号查询该商品是否存在
     * @param companyId
     * @param number
     * @return
     */
    int queryProductByNumber(@Param("companyId") String companyId, @Param("number") String number);

    /**
     * 通过商品id查询该商品是否存在
     * @param companyId
     * @param produceId
     * @return
     */
    int queryProductByProduceId(@Param("companyId") String companyId, @Param("produceId") String produceId);

    /**
     * 新增商品
     * @param companyId
     * @param addDto
     * @return
     */
    int addProduce(@Param("companyId") String companyId, @Param("addDto") ProductAddDto addDto);

    /**
     * 删除商品
     * @param companyId
     * @param produceId
     * @return
     */
    int deleteProduce(@Param("companyId") String companyId, @Param("produceId") String produceId);

    /**
     * 编辑商品
     * @param companyId
     * @param editDto
     * @return
     */
    int editProductByProduceIdAndProduceId(@Param("companyId") String companyId, @Param("editDto") ProductEditDto editDto);

    /**
     * 商品上下架
     * @param companyId
     * @param upAndDown
     * @return
     */
    int upAndDownProduce(@Param("companyId") String companyId, @Param("upAndDown") ProductUpAndDown upAndDown);

    /**
     *查询商品统一批发价（对经销商）
     * @param companyId
     * @param produceId
     * @return
     */
    BigDecimal queryProducePrice(@Param("companyId") String companyId, @Param("produceId") String produceId);

    /**
     *查询商品编号,名称,id
     * @param companyId
     * @return
     */
    List<ProductInChannealDiscountMgt> queryProduceDiscount(String companyId);

    /**
     * 查询商品根据id
     * @param companyId
     * @param produceId
     * @return
     */
    Product queryProduceInfo(@Param("companyId") String companyId, @Param("produceId") String produceId);

    /**
     * 编辑时根据名称和编号查询是否存在
     * @param companyId
     * @param editDto
     * @return
     */
    int queryEditProductByNameOrNumber(@Param("companyId") String companyId, @Param("editDto") ProductEditDto editDto);
}
